
package cn.dubbo.oms.logging.aspect;

import java.util.Date;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.stereotype.Component;

import cn.dubbo.oms.logging.bean.entity.Loger;

/**
 * 【 监控日志查询,记录日志】
 * 
 * @author DreamSea
 * @version 创建时间：2019年7月28日 下午3:13:12
 */
@Component
@Aspect
public class LgAspect {
	/**
	 * 配置切入点
	 */
	@Around("execution(* cn.dubbo.api.service.OrderService.*(..))")
	public Object logPointcut(ProceedingJoinPoint joinPoint) {
		// 获取方法签名
		MethodSignature signature = (MethodSignature) joinPoint.getSignature();
		String methodName = signature.getMethod().getName();
		Loger loger = new Loger();
		loger.setCreateTime(new Date());
		if ("query".equals(methodName)) {
			loger.setOperation("查询我的订单");
		}
		loger.setUsername((String) joinPoint.getArgs()[0]);
		loger.setContent("用户:" + loger.getUsername() + " 在 " + loger.getCreateTime() + " " + loger.getOperation());
		System.out.println(loger.getContent());
		// 将logger对象持久化到数据中
		
		

		// 继续执行方法orderservice.query
		try {
			return joinPoint.proceed();
		} catch (Throwable e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;

	}
}
